package platzerworld.kegeln.gui.tabs;

import java.util.List;

import platzerworld.kegeln.R;
import platzerworld.kegeln.common.ConstantsIF;
import platzerworld.kegeln.ergebnis.db.ErgebnisSpeicher;
import platzerworld.kegeln.ergebnis.vo.ErgebnisVO;
import platzerworld.kegeln.gui.chart.IChart;
import platzerworld.kegeln.gui.chart.KegelverwaltungLineChart;
import platzerworld.kegeln.gui.chart.KegelverwaltungTimeChart;
import platzerworld.kegeln.spieler.vo.SpielerVO;
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;
import android.widget.Toast;

public class CustomTabActivity extends TabActivity implements ConstantsIF {
	
	private ErgebnisSpeicher mErgebnisSpeicher;
	private SpielerVO mSpielerVO;
	
	private IChart[] mCharts = new IChart[] {new KegelverwaltungLineChart(),  new KegelverwaltungTimeChart(), };
	
	public LayoutInflater layoutInflater = null;
	ViewGroup viewGroupTabContent;
	View mSelectedView;

	private void setupTabHost() {
		getTabHost().getTabWidget().setDividerDrawable(R.drawable.tab_divider);
		
		layoutInflater = (LayoutInflater)getTabHost().getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		viewGroupTabContent = (ViewGroup)findViewById(android.R.id.tabcontent);
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tabs);

		Bundle extras = getIntent().getExtras();
		if (extras == null) {
			return;
		}
		mSpielerVO = (SpielerVO) extras.getSerializable(INTENT_EXTRA_SPIELER);
		
		init();
		
		getTabHost().getTabWidget().setDividerDrawable(R.drawable.tab_divider);
		
		getTabHost().setOnTabChangedListener(new OnTabChangeListener() {
			
			@Override
			public void onTabChanged(String tabId) {
				if("Tab 1".equals(tabId)){
					
				}else if("Tab 2".equals(tabId)){
					
				} else if("Tab 3".equals(tabId)){
					
				}
				Toast.makeText(CustomTabActivity.this, "Tab chanced: "+tabId, Toast.LENGTH_SHORT).show();
			}
		});
		setupTab();
	}
	
	@Override
	protected void onDestroy() {
		cleanDatabase();
		super.onDestroy();
	}
	
	private void init(){
		initWidgets();
		bindWidgets();
		initStyle();
		initListener();
		initContextMenu();
		initDatabase();
	}
	
	private void bindWidgets(){
	}
	
	private void initStyle() {
	}
	
	private void initWidgets(){
	}
	
	private void initListener(){	
		
	}
	
	private void initContextMenu(){
	}
	
	private void initDatabase(){
		mErgebnisSpeicher = new ErgebnisSpeicher(this);
	}
	
	private void cleanDatabase(){
		if(null != mErgebnisSpeicher){
			mErgebnisSpeicher.schliessen();
		}
	}

	private void setupTab() {
		View tabview1 = createTabView(getTabHost().getContext(), "Gesamt");
		View tabview2 = createTabView(getTabHost().getContext(), "1.DG Volle");
		View tabview3 = createTabView(getTabHost().getContext(), "2.DG Volle");
		
		List<ErgebnisVO> ergebniss = mErgebnisSpeicher.ladeErgebnisZumSpielerListeVO(mSpielerVO.id);
		
		mCharts[0].putData(ergebniss);
		mCharts[1].putData(ergebniss);
		Intent intent1 = mCharts[0].execute(this, CHART_INDIKATOR_GESAMT);
		Intent intent2 = mCharts[0].execute(this, CHART_INDIKATOR_DG_1);
		Intent intent3 = mCharts[0].execute(this, CHART_INDIKATOR_DG_2);
		
		TabSpec setContent1 = getTabHost().newTabSpec("Tab 1").setIndicator(tabview1).setContent(intent1);
		getTabHost().addTab(setContent1);
		
		TabSpec setContent2 = getTabHost().newTabSpec("Tab 2").setIndicator(tabview2).setContent(intent2);
		getTabHost().addTab(setContent2);
		
		TabSpec setContent3 = getTabHost().newTabSpec("Tab 3").setIndicator(tabview3).setContent(intent3);
		getTabHost().addTab(setContent3);

	}

	private static View createTabView(final Context context, final String text) {
		View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
		TextView tv = (TextView) view.findViewById(R.id.tabsText);
		tv.setText(text);
		return view;
	}
}